package com.fessc.develop.service.interfaces;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fessc.develop.entity.comvo.SettlePurchaseOrderVo;
import com.fessc.develop.entity.comvo.SettleSaleOrderVo;
import com.fessc.develop.entity.dbvo.SettleTrade;
import com.fessc.develop.entity.ccbvo.CCBSettleTradeSendBodyVo;
import com.fessc.develop.entity.comvo.SettleTradeSendBodyVo;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author y
 * @since 2024-06-27
 */
public interface ISettleTradeService extends IService<SettleTrade> {

    /**
     * 根据跨境付汇记录集，生成发送报报文体
     *
     * @param settleTrade 跨境付汇记录
     * @return 跨境付汇报文体
     */
    SettleTradeSendBodyVo fakeSettleTradeSendBody(SettleTrade settleTrade);

    /**
     * 根据跨境付汇记录集，生成发送报报文体
     *
     * @param settleTrade 跨境付汇记录
     * @return 跨境付汇报文体
     */
    CCBSettleTradeSendBodyVo fakeCCBSettleTradeSendBody(SettleTrade settleTrade);

    /**
     * 根据订单编号和银行编号，查询建行跨境付汇记录集
     *
     * @param bankId 银行编号
     * @param termDate 查询时间
     * @param containType 包含条件
     * @return 跨境付汇集合
     */
    List<SettleTrade> getCCBSettleTradeByBankIdToPush(String bankId, String termDate, String containType);

    /**
     * 根据订单编号和银行编号，查询跨境付汇记录集
     *
     * @param bankId 银行编号
     * @param termDate 查询时间
     * @param containType 包含条件
     * @return 跨境付汇集合
     */
    List<SettleTrade> getSettleTradeByBankIdToPush(String bankId, String termDate, String containType);

    /**
     * 根据订单日期和银行编号，查询跨境付汇记录集
     *
     * @param settleDate 订单日期
     * @param bankId 银行编号
     * @return 跨境付汇集合
     */
    List<SettleTrade> getSettleTradeCheckingList(String settleDate, String bankId);

    /**
     * 根据订单编号，查询跨境付汇记录
     *
     * @param orderNo 订单编号
     * @return 跨境付汇记录
     */
    SettleTrade getSettleTradeByOrderNos(String orderNo);

    /**
     * 根据业务核对编码，查询跨境付汇记录
     *
     * @param settleId 业务核对编码
     * @return 跨境付汇记录
     */
    SettleTrade getSettleTradeBySettleId(String settleId);

    /**
     * 根据银行编号，查询跨境付汇待更新状态记录集
     *
     * @param bankId 银行编号
     * @return 跨境付汇集合
     */
    List<SettleTrade> getSettleTradeToUpdateStatusByBankId(String bankId, String termDate, String containType);

    /**
     * 查询跨境付汇销售订单明细
     *
     * @param orderno 订单编号
     * @return 跨境付汇销售订单集合
     */
    List<SettleSaleOrderVo> getSettleTradeSaleOrderList(String orderno);

    /**
     * 查询跨境付汇采购订单明细
     *
     * @param orderno 订单编号
     * @return 跨境付汇采购订单集合
     */
    List<SettlePurchaseOrderVo> getSettleTradePurchaseOrderList(String orderno);

    /**
     * 更新跨境付汇交易状态
     *
     * @param settleTrade 跨境付汇
     * @param tranType 也业务类型
     * @return 更新成功失败标志
     */
    Boolean updateSettleTradeStatusRefidsLog(SettleTrade settleTrade, String tranType) ;

}
